
import 'package:flutter/material.dart';

typedef VoidCallback = void Function();

class JFlatButton extends StatelessWidget {

  final String title;
  final TextStyle textStyle;
  final Color color;
  final Color highlightColor;
  final Brightness colorBrightness;
  final Color splashColor;
  final ShapeBorder shape;
  final VoidCallback onPressed;
  final ValueChanged<bool> onHighlightChanged;
  final ButtonTextTheme textTheme;
  final Color textColor;
  final Color disabledTextColor;
  final Color disabledColor;
  final Color focusColor;
  final Color hoverColor;
  final EdgeInsetsGeometry padding;
  final Clip clipBehavior = Clip.none;
  final FocusNode focusNode;
  final bool autofocus = false;
  final MaterialTapTargetSize materialTapTargetSize;
  final double height;
  final EdgeInsetsGeometry frameMargin;///外边框
  final EdgeInsetsGeometry framePadding;///外边框
  final int flex;///大小是否根据文字 自适应 0: 是，1：不是

  const JFlatButton({
    Key key,
    @required this.title,
    @required this.onPressed,
    this.textStyle,
    this.color = Colors.blue,
    this.highlightColor,
    this.colorBrightness = Brightness.dark,
    this.splashColor = Colors.grey,
    this.shape,
    this.height ,
    this.frameMargin,
    this.framePadding,
    this.flex = 1,

    this.onHighlightChanged,
    this.textTheme,
    this.textColor,
    this.disabledTextColor,
    this.disabledColor,
    this.focusColor,
    this.hoverColor,
    this.padding,
    this.focusNode,
    this.materialTapTargetSize,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Expanded(
          flex: this.flex,
          child: Container(
            height: this.height,
            margin: this.frameMargin,
            padding: this.framePadding,
            child: FlatButton(
              onPressed: this.onPressed,
              child:Text(this.title,style: this.textStyle),
              color: this.color,
              highlightColor: this.highlightColor,
              colorBrightness: this.colorBrightness,
              splashColor: this.splashColor,
              shape: this.shape,
              onHighlightChanged: this.onHighlightChanged,
              textTheme: this.textTheme,
              textColor: this.textColor,
              disabledTextColor: this.disabledTextColor,
              disabledColor: this.disabledColor,
              focusColor: this.focusColor,
              hoverColor: this.hoverColor,
              padding: this.padding,
              focusNode: this.focusNode,
              materialTapTargetSize: this.materialTapTargetSize,
            ),
          ),
        ),
      ],
    );
  }
}
